package bm.com.framework.common.exception;

import bm.com.framework.common.resp.ResultVO;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice
public class BmExceptionHandle {
    private static final Logger logger = LoggerFactory.getLogger(BmException.class);

    /**
     * 自定义异常
     * @param be
     * @return
     */
    @ExceptionHandler(BmException.class)
    public ResultVO handleBmException(BmException be){
        ResultVO resultR = new ResultVO();
        resultR.put("code", be.getCode());
        resultR.put("msg", be.getMsg());
        return resultR;
    }
    /**
     * 自定义异常
     * @param be
     * @return
     */
    @ExceptionHandler(RuntimeException.class)
    public ResultVO handleRuntimeException(RuntimeException be){
        ResultVO resultR = new ResultVO();
        resultR.put("code", 501);
        resultR.put("msg", be.getMessage());
        logger.error(be.getMessage(), be);
        return resultR;
    }

//    @ExceptionHandler(DuplicateKeyException.class)
//    public ResultVO handleDuplicateKeyException(DuplicateKeyException ex){
//        ResultVO resultR = new ResultVO();
//        resultR.put("code", EnumCode.CODE_DB_RECORD_EXISTS);
//        resultR.put("msg", ex.getMessage());
//        return resultR;
//    }


//    /**
//     * shiro 验证权限异常
//     * @param ex
//     * @return
//     */
//    @ExceptionHandler(UnauthorizedException.class)
//    public ResultVO handleUnauthorizedException(Exception ex){
//        logger.error(ex.getMessage(), ex);
//        ResultVO result = new ResultVO();
//        result.put("code", EnumCode.UNAUTHORIZED);
//        result.put("msg", ex.getMessage());
//        return result;
//    }

//    /**
//     * shiro 参数验证异常
//     * @param ex
//     * @return
//     */
//    @ExceptionHandler(IncorrectCredentialsException.class)
//    public ResultVO handleIncorrectCredentialsException(Exception ex){
//        logger.error(ex.getMessage(), ex);
//        ResultVO result = new ResultVO();
//        result.put("code", EnumCode.UNAUTHORIZED);
//        result.put("msg", ex.getMessage());
//        return result;
//    }

}
